#ifndef __SYSMGR_H__
#define __SYSMGR_H__

#include <stdbool.h>
#include <stdint.h>

// 系统状态枚举
typedef enum {
    SYSMGR_STATE_INIT,      // 初始化状态
    SYSMGR_STATE_RUNNING,    // 运行状态
    SYSMGR_STATE_ERROR       // 错误状态
} sysmgr_state_t;

// 系统管理结构体
typedef struct {
    // 当前登录用户信息
    char username[32];       // 当前登录用户名
    char password[32];       // 当前登录用户密码
    uint8_t user_type;       // 用户类型（0:普通用户，1:管理员）
    bool is_logged_in;       // 登录状态

    // 系统状态信息
    sysmgr_state_t state;    // 系统状态
    uint32_t error_code;     // 错误代码

    // 系统配置信息
    bool auto_login;         // 是否自动登录
    char last_username[32];  // 上次登录用户名
} sysmgr_t;

// 全局系统管理实例
extern sysmgr_t *g_sysmgr;

/**
 * @brief 初始化系统管理模块
 * @return true:成功，false:失败
 */
bool sysmgr_init(void);

/**
 * @brief 设置当前登录用户信息
 * @param username 用户名
 * @param password 密码
 * @param user_type 用户类型
 */
void sysmgr_set_user(const char *username, const char *password, uint8_t user_type);

/**
 * @brief 清除当前登录用户信息
 */
void sysmgr_clear_user(void);

/**
 * @brief 获取当前登录用户名
 * @return 当前登录用户名，如果未登录返回NULL
 */
const char *sysmgr_get_username(void);

/**
 * @brief 获取当前登录用户密码
 * @return 当前登录用户密码，如果未登录返回NULL
 */
const char *sysmgr_get_password(void);

/**
 * @brief 获取当前登录用户类型
 * @return 当前登录用户类型，如果未登录返回0
 */
uint8_t sysmgr_get_user_type(void);

/**
 * @brief 获取当前登录状态
 * @return true:已登录，false:未登录
 */
bool sysmgr_is_logged_in(void);

/**
 * @brief 设置系统状态
 * @param state 系统状态
 */
void sysmgr_set_state(sysmgr_state_t state);

/**
 * @brief 获取系统状态
 * @return 系统状态
 */
sysmgr_state_t sysmgr_get_state(void);

/**
 * @brief 设置错误代码
 * @param error_code 错误代码
 */
void sysmgr_set_error(uint32_t error_code);

/**
 * @brief 获取错误代码
 * @return 错误代码
 */
uint32_t sysmgr_get_error(void);

#endif // __SYSMGR_H__